﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TechControl.BD;

namespace TechControl.Presentation
{
    public partial class frm_cadFuncionario : frm_default
    {
        frm_listarFuncionario lfuncionario = new frm_listarFuncionario();

        public frm_cadFuncionario(frm_listarFuncionario sendedLFuncionario)
        {
            InitializeComponent();
            lfuncionario = sendedLFuncionario;
        }

        //cancela operação e volta para  form anterior
        private void bt_cancelar_Click(object sender, EventArgs e)
        {
            this.closeForm();
        }

        //efetua a leitura do código de barras.
        private void txt_codFuncionario_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(System.Windows.Forms.Keys.Enter))
            {
                if (txt_codFuncionario.Text == "")
                {
                    MessageBox.Show("Insira um código de funcionário para prosseguir!", "Cadastro de funcionário.");
                    txt_codFuncionario.Focus();
                }
                else
                {
                    txt_nomeFuncionario.Focus();
                }
            }
        }

        //permite digitar somente números.
        private void txt_cpf_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
                MessageBox.Show("Somente números são permitidos neste campo!", "Aviso");
                txt_cpf.Text = "";
                txt_cpf.Focus();
            }
        }

        //no load do form, carrega proximo cod_funcionário a ser cadastrado.
        private void frm_cadFuncionario_Load(object sender, EventArgs e)
        {
            Int64 lastCod = FuncionarioDB.getInstance().getLastCodFunc();
            lastCod += 1;
            txt_codFuncionario.Text = lastCod.ToString();
        }

        //método que verifica campos obrigatórios.
        private bool verificaCampos()
        {
            bool result = true;

            if (txt_nomeFuncionario.Text == "")
            {
                MessageBox.Show("Insira o nome do funcionário para prosseguir!","Cadastro de Funcionário");
                txt_nomeFuncionario.Focus();
                result = false;
            }

            else if (txt_cpf.Text == "")
            {
                MessageBox.Show("Insira o CPF do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_cpf.Focus();
                result = false;
            }

            else if (txt_rg.Text == "")
            {
                MessageBox.Show("Insira o RG do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_rg.Focus();
                result = false;
            }

            else if (txt_endereco.Text == "")
            {
                MessageBox.Show("Insira o Endereço do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_endereco.Focus();
                result = false;
            }

            else if (txt_email.Text == "")
            {
                MessageBox.Show("Insira o E-mail do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_email.Focus();
                result = false;
            }

            else if (txt_celular.Text == "")
            {
                MessageBox.Show("Insira o número Celular do funcionário para prosseguir!", "Cadastro de Funcionário");
                txt_celular.Focus();
                result = false;
            }

            return result;
        }

        //verifica os campos e se estiver tudo ok, efetua o cadastro.
        private void bt_salvar_Click(object sender, EventArgs e)
        {
            if (verificaCampos())
            {
                Int64 idFunc = Int64.Parse(txt_codFuncionario.Text.ToString());
                string nome = txt_nomeFuncionario.Text;
                string cpf = txt_cpf.Text;
                string rg = txt_rg.Text;
                string endereco = txt_endereco.Text;
                string celular = txt_celular.Text;
                string email = txt_email.Text;
                string data = DateTime.Now.ToString("dd/MM/yyyy");

                FuncionarioDB.getInstance().insertNewFunc(idFunc, nome, cpf, rg, endereco, celular, email, "ATIVO", data);

                var resposta = MessageBox.Show("Funcionário Cadastrado com Sucesso! Deseja inserir outro registro?",
                "Novo Cadastro", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                if (resposta == DialogResult.Yes)
                {
                    clear();
                    Int64 lastCod = FuncionarioDB.getInstance().getLastCodFunc();
                    lastCod += 1;
                    txt_codFuncionario.Text = lastCod.ToString();
                }
                else
                {
                    if (lfuncionario == null)
                    {
                        this.closeForm();
                    }
                    else
                    {
                        lfuncionario.loadDadosOnGrid();
                        this.closeForm();
                    }
                }
            }
            else
            {
            }
        }

        //limpa os campos.
        private void clear()
        {
            txt_nomeFuncionario.Text = "";
            txt_codFuncionario.Text = "";
            txt_cpf.Text = "";
            txt_rg.Text = "";
            txt_endereco.Text = "";
            txt_email.Text = "";
            txt_celular.Text = "";
            txt_nomeFuncionario.Focus();
        }

    }
}
